package com.example.springmvcproject.Utils;

import cn.dev33.satoken.secure.SaSecureUtil;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;

public class SaTokenUtils {

    /**
     * 获取一个加密后的ase密码
     * @param key 生成一个自定义的加盐值
     * @param password 明文密码
     * @return
     */
    public static String getAesEncrypt(String key,String password){
        return SaSecureUtil.aesEncrypt(key, password);
    }

    /**
     * 获取解密后的密码
     * @param key 数据库中的加盐值
     * @param enPassword 加密后的密码
     * @return
     */
    public static String getAesDecrypt(String key,String enPassword){
        return SaSecureUtil.aesDecrypt(key, enPassword);
    }

    /**
     * 记住我点击以后
     * @param id
     */
    public static void isMarryLogin(Integer id){
        StpUtil.login(id,true);
    }

    /**
     * 登陆后获取
     * @return
     */
    public static SaTokenInfo getLoginToken(){
        return StpUtil.getTokenInfo();
    }

    /**
     * 根据token获取session
     * @param token
     * @return
     */
    public static SaSession getSessionByToken(String token){
        return StpUtil.getTokenSessionByToken(token);
    }

    /**
     * 获取当前提交token的session
     * @return
     */
    public static SaSession getSessionByHeaderToken(){
        return  StpUtil.getTokenSession();
    }

    /**
     * 通过token获取指定的id
     * @param token
     * @return 如果登录返回ID，未登录返回null
     */
    public static Integer getIdByToken(String token){
        return (Integer) StpUtil.getLoginIdByToken(token);
    }
}
